const express = require('express')
const fs = require('fs')
const path = require('path')
// 实例化
const app = express()
// 解析body参数 -- post请求
const bodyParser =  require('body-parser')
// 处理静态资源
app.use(express.static('public'))
// 处理参数
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extend:false}))

// 允许跨域
app.all('*',function(req,res,next){
  res.header('Access-Control-Allow-Origin', '*');
  //Access-Control-Allow-Headers ,可根据浏览器的F12查看,把对应的粘贴在这里就行
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Methods', '*');
  // res.header('Content-Type', 'application/json;charset=utf-8');
  next()
})
// 注册接口
app.post('/register',(req,res)=>{
  console.log(req.body)
  let {username , password} = req.body
  let userData = fs.readFileSync(path.join(__dirname, 'data/userData.json')).toString()
  userData = userData ? JSON.parse(userData) : []
  if(userData.find(item=>item.username==username)){
    //已经用户注册
    res.send({
      code: 0,
      msg: '用户名已被注册'
    })
  }else{
    //注册新用户
    userData.push(req.body)
    fs.writeFileSync(path.join(__dirname, 'data/user.json'), JSON.stringify(userData))
    res.send({
      code: 0,
      msg: '用户名注册成功'
    })
  }
  
    
  
})
// 登录接口
app.post('/login',(req,res)=>{
  
  let {username , password} = req.body
  let userData = fs.readFileSync(path.join(__dirname, 'data/userData.json')).toString()
  userData = userData ? JSON.parse(userData) : []
  if(userData.find(item=>item.username==username&&item.password==password)){
    res.send({
      code: 1,
      msg: '登陆成功'
    })
  }else{
    res.send({
      code: 0,
      msg: '登陆失败'
    })
  }
})
//发布博客
app.post('/publish',(req,res)=>{
  console.log(req.body)
  let publishData = fs.readFileSync(path.join(__dirname, 'data/publish.json')).toString()
  publishData = publishData ? JSON.parse(publishData) : []
  publishData.push(req.body)
  fs.writeFileSync(path.join(__dirname, 'data/publish.json'), JSON.stringify(publishData))
  res.send('发布成功')
})
//获取全部博客
app.post('/allPublish',(req,res)=>{
  let publishData = fs.readFileSync(path.join(__dirname, 'data/publish.json')).toString()
  publishData = publishData ? JSON.parse(publishData) : []
  res.send(publishData)
})
//点赞功能
app.post('/agree', (req, res) => {
  const { phone, article_id }  = req.body
  let agreeData = fs.readFileSync(path.join(__dirname, 'data/agree.json')).toString()
  agreeData = agreeData ? JSON.parse(agreeData) : []
  let i = 0
  for(i; i< agreeData.length; i++) {
      if(agreeData[i].article_id == article_id) {
          break
      }
  }
  if(i == agreeData.length ){
      agreeData.push({
          id: agreeData.length + 1,
          phone: phone,
          article_id: article_id
      })
      fs.writeFileSync(path.join(__dirname, 'data/agree.json'), JSON.stringify(agreeData))
      res.send({
          code: 1,
          msg: '点赞成功'
      })
  } else {
      agreeData.splice(i, 1)
      fs.writeFileSync(path.join(__dirname, 'data/agree.json'), JSON.stringify(agreeData))
      res.send({
          code: 0,
          msg: '取消点赞成功'
      })
  }
})
//收藏功能

//评论功能

//获取所以话题
app.post('/TopicData',(req,res)=>{
                
  let userData = fs.readFileSync(path.join(__dirname, 'data/topicData.json')).toString()
  userData = userData ? JSON.parse(userData) : []
  res.send({
      code: 1,
      msg: userData
  })
})
//关注话题
app.post('/addAttention',(req,res)=>{
  //看看参数 {user:this.user,key} 传过来没有
  const { user, key ,id} = req.body
  console.log(user, key ,id)
  //获取全部话题数据
  let userData = fs.readFileSync(path.join(__dirname, 'data/topicData.json')).toString()
  userData = userData ? JSON.parse(userData) : []

  //获取关注的话题数据
  let addAttentionData = fs.readFileSync(path.join(__dirname, 'data/attention.json')).toString()
  addAttentionData = addAttentionData ? JSON.parse(addAttentionData) : []

  //通过下标[key]来判断点击的是哪一个数据

  //给点击的数据加一个字段 用来判断是哪个用户点击的关注
  userData[key].user=user

  //判断关注的话题数据里面有没有数据 如果没有 就push  如果有那就删除
  let arr = addAttentionData.find(item=>item.topic_id==id&&item.user==user)
  if(arr){
      //说明里面有 做删除操作
      addAttentionData.map((item,index)=>{
          if(item.topic_id==id&&item.user==user){
              //说明找到了
              addAttentionData.splice(index,1)
              fs.writeFileSync(path.join(__dirname, 'data/attention.json'), JSON.stringify(addAttentionData))
              res.send({
                  code: 0,
                  msg: addAttentionData
              })
          }
      })
  }else{
      //说明没有 push进去
      addAttentionData.push(userData[key])
      fs.writeFileSync(path.join(__dirname, 'data/attention.json'), JSON.stringify(addAttentionData))
      res.send({
          code: 1,
          msg: addAttentionData
      })
  }
})
// 启动监听
app.listen(8080,()=>{
  console.log('running ');
})